package com.example.music.service;

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;
import java.util.Map;

public interface BaseService<T> {
    /**
     * 添加数据
     *
     * @param entity
     */
    Integer add(T entity);

    /**
     * 通过id删除
     *
     * @param id
     */
    Integer deleteById(String id);

    /**
     * 通过多个id删除多条数据
     *
     * @param ids
     */
    void deleteByIds(String ids);

    /**
     * 通过指定单参数
     *
     * @param key
     * @param value
     */
    void deleteByParam(String key, Object value);

    /**
     * 通过指定多参数
     *
     * @param params
     */
    void deleteByParams(Map<String, Object> params);

    /**
     * 更新数据
     *  @param entity
     * @param updateWrapper
     * @return
     */
    int update(T entity, UpdateWrapper<T> updateWrapper);

    /**
     * 通过id查找
     *
     * @param id
     * @return
     */
    T selectItemById(String id);

    /**
     * 查找所有
     *
     * @return
     */
    List<T> selectAll();

    /**
     * 通过单一参数查找
     *
     * @param key
     * @param value
     * @return
     */
    List<T> selectItemsByParam(String key, Object value);

    /**
     * 通过多参数查找
     *
     * @param params
     * @return
     */
    List<T> selectItemsByParams(Map<String, Object> params);

    Page<T> pageTest(String id);
}
